home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CPPAWARE.PAK / DBEDIT.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  5KB  |  157 lines

  1. //--------------------------------------------------------
  2. // DBEDIT.CPP
  3. // Copyrights (C) 1996 Borland International
  4. //--------------------------------------------------------
  5.  
  6. #include <vdbt/dbcontrl.h>
  7. #pragma hdrstop
  8. #include <vdbt/dbedit.h>
  9.  
  10. //--------------------------------------------------------
  11. // TDBEdit (VB3, subclassed from EDIT)
  12. //--------------------------------------------------------
  13. TDBEdit::TDBEdit( TWindow *parent, int id, LPCSTR title
  14.                       , int x, int y, int w, int h, TModule *module )
  15.   : TDBControl( parent, id, "TDBEdit", title, x, y, w, h, module )
  16.   , INIT_SOURCE( OnClick )
  17.   , INIT_SOURCE( OnDragDrop )
  18.   , INIT_SOURCE( OnDragOver )
  19.   , INIT_SOURCE( OnEndDrag )
  20.   , INIT_SOURCE( OnDblClick )
  21.   , INIT_SOURCE( OnChange )
  22.   , INIT_SOURCE( OnEnter )
  23.   , INIT_SOURCE( OnExit )
  24.   , INIT_SOURCE( OnKeyDown )
  25.   , INIT_SOURCE( OnKeyPress )
  26.   , INIT_SOURCE( OnKeyUp )
  27.   , INIT_SOURCE( OnMouseDown )
  28.   , INIT_SOURCE( OnMouseMove )
  29.   , INIT_SOURCE( OnMouseUp )
  30. {
  31. }
  32.  
  33. TDBEdit::TDBEdit( TWindow *parent, int resourceId, TModule *module )
  34.   : TDBControl( parent, resourceId, module )
  35.   , INIT_SOURCE( OnClick )
  36.   , INIT_SOURCE( OnDragDrop )
  37.   , INIT_SOURCE( OnDragOver )
  38.   , INIT_SOURCE( OnEndDrag )
  39.   , INIT_SOURCE( OnDblClick )
  40.   , INIT_SOURCE( OnChange )
  41.   , INIT_SOURCE( OnEnter )
  42.   , INIT_SOURCE( OnExit )
  43.   , INIT_SOURCE( OnKeyDown )
  44.   , INIT_SOURCE( OnKeyPress )
  45.   , INIT_SOURCE( OnKeyUp )
  46.   , INIT_SOURCE( OnMouseDown )
  47.   , INIT_SOURCE( OnMouseMove )
  48.   , INIT_SOURCE( OnMouseUp )
  49. {
  50. }
  51.  
  52.  
  53. //--------------------------------------------------------
  54. // OWL response table.
  55. //--------------------------------------------------------
  56. DEFINE_DB_RESPONSE_TABLE1( TDBEdit, TDBControl )
  57.   EV_VBXEVENT_CLICK,
  58.   EV_VBXEVENT_DRAGOVER,
  59.   EV_VBXEVENT_DRAGDROP,
  60.   EV_VBXEVENT_ENDDRAG,
  61.   EV_VBXEVENT_DBLCLICK(  Event_TDBEdit_DblClick ),
  62.   EV_VBXEVENT_KEYDOWN(   Event_TDBEdit_KeyDown ),
  63.   EV_VBXEVENT_KEYPRESS(  Event_TDBEdit_KeyPress ),
  64.   EV_VBXEVENT_KEYUP(     Event_TDBEdit_KeyUp ),
  65.   EV_VBXEVENT_ENTER(     Event_TDBEdit_GotFocus ),
  66.   EV_VBXEVENT_EXIT(      Event_TDBEdit_LostFocus ),
  67.   EV_VBXEVENT_MOUSEDOWN( Event_TDBEdit_MouseDown ),
  68.   EV_VBXEVENT_MOUSEMOVE( Event_TDBEdit_MouseMove ),
  69.   EV_VBXEVENT_MOUSEUP(   Event_TDBEdit_MouseUp ),
  70.   EV_VBXEVENT_CHANGE(    Event_TDBEdit_Change ),
  71. END_RESPONSE_TABLE;
  72.  
  73.  
  74. //--------------------------------------------------------
  75. // Event Handlers
  76. //--------------------------------------------------------
  77. DEFINE_DB_EVENT( TDBEdit, OnClick,     TNotifyEvent,   Event_TDBEdit_Click );
  78. DEFINE_DB_EVENT( TDBEdit, OnDragDrop,  TDragEvent,     Event_TDBEdit_DragDrop );
  79. DEFINE_DB_EVENT( TDBEdit, OnDragOver,  TDragOverEvent, Event_TDBEdit_DragOver );
  80. DEFINE_DB_EVENT( TDBEdit, OnEndDrag,   TDragEvent,     Event_TDBEdit_EndDrag );
  81. DEFINE_DB_EVENT( TDBEdit, OnChange,    TNotifyEvent,   Event_TDBEdit_Change );
  82. DEFINE_DB_EVENT( TDBEdit, OnDblClick,  TNotifyEvent,   Event_TDBEdit_DblClick );
  83. DEFINE_DB_EVENT( TDBEdit, OnEnter,     TNotifyEvent,   Event_TDBEdit_GotFocus );
  84. DEFINE_DB_EVENT( TDBEdit, OnExit,      TNotifyEvent,   Event_TDBEdit_LostFocus );
  85. DEFINE_DB_EVENT( TDBEdit, OnKeyDown,   TKeyEvent,      Event_TDBEdit_KeyDown );
  86. DEFINE_DB_EVENT( TDBEdit, OnKeyPress,  TKeyPressEvent, Event_TDBEdit_KeyPress );
  87. DEFINE_DB_EVENT( TDBEdit, OnKeyUp,     TKeyEvent,      Event_TDBEdit_KeyUp );
  88. DEFINE_DB_EVENT( TDBEdit, OnMouseDown, TMouseEvent,    Event_TDBEdit_MouseDown );
  89. DEFINE_DB_EVENT( TDBEdit, OnMouseMove, TMouseEvent,    Event_TDBEdit_MouseMove );
  90. DEFINE_DB_EVENT( TDBEdit, OnMouseUp,   TMouseEvent,    Event_TDBEdit_MouseUp );
  91.  
  92.  
  93. //--------------------------------------------------------
  94. // Methods
  95. //--------------------------------------------------------
  96. void TDBEdit::CopyToClipboard()
  97. {
  98.   TClipboard& cb = OpenClipboard();
  99.  
  100.   if( cb )
  101.   {
  102.     cb.EmptyClipboard();
  103.  
  104.     if( SelLength )
  105.     {
  106.       HGLOBAL  hText = GlobalAlloc( GHND, SelLength + 1 );
  107.  
  108.       if( hText )
  109.       {
  110.         LPSTR lpText = LPSTR( GlobalLock( hText ) );
  111.  
  112.         if( lpText )
  113.         {
  114.           lstrcpyn( lpText, SelText->c_str(), SelLength + 1 );
  115.           GlobalUnlock( hText );
  116.         }
  117.         cb.SetClipboardData( CF_TEXT, hText );
  118.       }
  119.     }
  120.  
  121.     cb.CloseClipboard();
  122.   }
  123. }
  124.  
  125. void TDBEdit::PasteFromClipboard()
  126. {
  127.   TClipboard& cb = OpenClipboard();
  128.  
  129.   if( cb && cb.IsClipboardFormatAvailable( CF_TEXT ) )
  130.   {
  131.     HGLOBAL  hText = cb.GetClipboardData( CF_TEXT );
  132.  
  133.     if( hText )
  134.     {
  135.       LPSTR lpText = LPSTR( GlobalLock( hText ) );
  136.  
  137.       if( lpText )
  138.       {
  139.         SelText = &string( lpText );
  140.         GlobalUnlock( hText );
  141.       }
  142.     }
  143.  
  144.     cb.CloseClipboard();
  145.   }
  146. }
  147.  
  148. int TDBEdit::GetSelTextBuf( LPSTR lpBuf, int nLen )
  149. {
  150.   int    iLen = min( nLen - 1, (int)SelLength );
  151.   lstrcpyn( lpBuf, SelText->c_str(), iLen );
  152.   lpBuf[ iLen ] = '\0';
  153.  
  154.   return iLen + 1;
  155. }
  156.  
  157.